www.gusucode.com > 溷沌分析工具箱 - OpenTSTOOL1.11 > 混沌分析工具箱 - OpenTSTOOL1.11\tstoolbox\@core\surrogate1.m
function cout = surrogate1(cin) %tstoolbox/@core/surrogate1 % Syntax: % * cout = surrogate1(cin) % % Input Arguments: % * cin - core object % % create surrogate data for a scalar time series by randomizing phases % of fourier spectrum % see : James Theiler et al.'Using Surrogate Data to Detect Nonlinearity % in Time Series', APPENDIX : ALGORITHM I % % Copyright 1997-2001 DPI Goettingen, License http://www.physik3.gwdg.de/tstool/gpl.txt if ndim(cin) > 1 error('not a scalar time series') end y = data(cin); N = dlens(cin,1); z = realfft(y); if mod(N,2) % ungerade L鋘ge nh = (N-1)/2; % N = 7 => nh = 3 z(2:end) = z(2:end) .* exp(2*pi*i*rand(nh,1)); else nh = (N/2)-1; % N = 6 => nh = 2 z(2:end-1) = z(2:end-1) .* exp(2*pi*i*rand(nh,1)); end cout = core(realifft(z,N));